package com.company.anr.utils;

import java.util.regex.Pattern;

public class SnValidator {

  // 规则1：以7开头，后跟17位数字
  private static final Pattern PATTERN_1 = Pattern.compile("^7\\d{17}$");

  // 规则2：以A010或A020开头，后跟14位数字
  private static final Pattern PATTERN_2 = Pattern.compile("^(A010|A020)\\d{14}$");

  /**
   * 判断SN号是否符合规则
   * 
   * @param sn 设备SN号
   * @return 是否符合规则
   */
  public static boolean isValid(String sn) {
    if (sn == null || sn.trim().isEmpty()) {
      return false;
    }

    String trimmedSn = sn.trim();
    return PATTERN_1.matcher(trimmedSn).matches() ||
        PATTERN_2.matcher(trimmedSn).matches();
  }

  /**
   * 获取SN验证错误信息
   * 
   * @param sn 设备SN号
   * @return 错误信息，如果验证通过则返回null
   */
  public static String getValidationError(String sn) {
    if (sn == null || sn.trim().isEmpty()) {
      return "SN号不能为空";
    }

    String trimmedSn = sn.trim();
    if (!PATTERN_1.matcher(trimmedSn).matches() &&
        !PATTERN_2.matcher(trimmedSn).matches()) {
      return "SN号格式不正确，应为：以7开头的18位数字 或 以A010/A020开头的17位字符";
    }

    return null;
  }
}

